package Ventanas;

import java.awt.EventQueue;
import javax.swing.JButton;

import Paneles.subPanelListaTemasUsuarioRegistrado;
import Paneles.subPanelMensajes;
import Paneles.subPanelUsuarioRegistrado;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

import javax.swing.JTextField;

import foroindaltronia.bd.IUsuario_Registrado;
import foroindaltronia.bd.IUsuario_SinRegistrar;
import foroindaltronia.bd.Tema;
import foroindaltronia.bd.Tema_no_terminal_oculto;
import foroindaltronia.bd.Tema_no_terminal_visible;
import foroindaltronia.bd.Usuario_registrado;


public class VForoUsuarioRegistrado extends VForo{

	public static subPanelUsuarioRegistrado subVUsuarioRegistrado;
	private VEscribirMensaje escribirMensaje;
	public static JButton btnCrearMensaje;
	//private JButton btnCrearTema;
	private VBuscar ventanaBuscar;
	public static Usuario_registrado usuarioRegistrado;
	public static IUsuario_Registrado interfazUsuarioRegistrado;
	
	/**
	 * Launch the application.
	 */
	/**public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					usuario = new Usuario_registrado();
					VForoUsuarioRegistrado window = new VForoUsuarioRegistrado(usuario);
					window.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}**/

	/**
	 * Create the application.
	 */
	public VForoUsuarioRegistrado(Usuario_registrado usuario) {
		super();
		usuarioRegistrado = usuario;
		try {
			interfazUsuarioRegistrado = (IUsuario_Registrado) Naming.lookup("rmi://localhost/usuarioregistrado");
			subVUsuarioRegistrado = new subPanelUsuarioRegistrado(this);
			subVUsuarioRegistrado.setBounds(587, 11, 220, 110);
			getContentPane().add(subVUsuarioRegistrado);
						
			btnCrearMensaje = new JButton("Crear mensaje");
			btnCrearMensaje.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					escribirMensaje = new VEscribirMensajeUsuarioRegistrado();
					escribirMensaje.setVisible(true);
				}
			});
			btnCrearMensaje.setBounds(190, 164, 111, 23);
			getContentPane().add(btnCrearMensaje);
			
			JButton btnBuscarTemaO = new JButton("Buscar...");
			btnBuscarTemaO.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					ventanaBuscar = new VBuscar();
					ventanaBuscar.setVisible(true);
				}
			});
			btnBuscarTemaO.setBounds(686, 164, 111, 23);
			getContentPane().add(btnBuscarTemaO);
			
			panelListaTemas = new subPanelListaTemasUsuarioRegistrado();
			scrollPanelListaTemas.setViewportView(panelListaTemas);
			getContentPane().add(scrollPanelListaTemas);
			((subPanelListaTemasUsuarioRegistrado)panelListaTemas).actualizarListaTemas(interfazUsuarioRegistrado.verTemas(VForo.temaActual));
			
			botonVolverListaTemas.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					try {
						if(temaActual != null)
						{	
							if(muestraMensajes){
								System.out.println("DEBERIA HACERLO");
								actualizarListaTemaTerminal(interfazUsuarioRegistrado.verTemas(temaActual));
								btnCrearMensaje.setEnabled(true);
								muestraMensajes=false;
							}
							else
							{
								System.out.println("NO MUESTRA MENSAJES!!!");
							
								if(temaActual instanceof Tema_no_terminal_oculto)
								{
									Tema temaPadre = ((Tema_no_terminal_oculto)temaActual).getTema_no_terminal_oculto_padre();
									if(temaPadre == null)
										temaActual = ((Tema_no_terminal_oculto)temaActual).getEsta_en();
									else
										temaActual = temaPadre;
								}
								else if(temaActual instanceof Tema_no_terminal_visible)
									temaActual = ((Tema_no_terminal_visible)temaActual).getTema_no_terminal_visible_padre();
								
							Tema[] listaTemas = interfazUsuarioRegistrado.verTemas(temaActual);
							actualizarListaTemaTerminal(null);
							if(listaTemas.length != 0)
								((subPanelListaTemasUsuarioRegistrado)panelListaTemas).actualizarListaTemas(listaTemas);
							int index = lblvariable.getText().lastIndexOf(" > ");
							if(index != -1)
									{
										String nuevaCadena = new String(lblvariable.getText().toCharArray(),0,index);
										lblvariable.setText(nuevaCadena);
									}
							else
								lblvariable.setText("Principal");
							}
						}
					} catch (RemoteException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			});
			scrollPanelListaTemas.setColumnHeaderView(botonVolverListaTemas);
			
			actualiarListaTemas();
			
		} catch (MalformedURLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (RemoteException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (NotBoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}
	
	public void actualiarListaTemas()
	{
		try {
			((subPanelListaTemasUsuarioRegistrado)panelListaTemas).actualizarListaTemas(interfazUsuarioRegistrado.verTemas(temaActual));
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void actualizarListaMensajes(String nombrePadre)
	{
		btnCrearMensaje.setEnabled(false);
		subPanelMensajes panelMensajes;
		try {
			System.out.println("Oh si");
			panelMensajes = new subPanelMensajes(interfazUsuarioRegistrado.buscarMensajesDeTemaTerminal(nombrePadre),usuarioRegistrado);
			panelPrincipal.setColumnHeader(null);
			panelPrincipal.setViewportView(panelMensajes);
			lblvariable.setText(lblvariable.getText()+" > "+nombrePadre);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void cambiarVentana()
	{
		VForo.temaActual=null;
		this.dispose();
		VForoUsuarioNoRegistrado vForoUsuarioNoRegistrado = new VForoUsuarioNoRegistrado();
		vForoUsuarioNoRegistrado.setVisible(true);
	}
}
